-- 混料需求

-- 重置输出
out = {}
var.requirement = {}

-- 初始化一个计时器
if var.timer == nil then
    var.timer = 0
end

-- 阈值为蓝色信号
var.limit = green['signal-blue']

-- 标识信号为S
var.id = green['signal-S']


-- 如果绿色信号任意值小于阈值，则表示需求该物品
for k, v in pairs(green) do
    -- 跳过信号S, C, L, P
    if k == 'signal-C' or k == 'signal-L' or k == 'signal-P' or k == 'signal-S' then
    else
        if v < -var.limit then
            -- 如果没有列车驶来，则需求为1
            if red['signal-C'] == 0 then
                out['signal-green'] = 1
                var.requirement[k] = 1
            end
        end
    end
end

-- 将标识信号乘以1000，加上每一个需求的信号并输出,由于需要脉冲信号，所以只在特殊时候输出
for k, v in pairs(var.requirement) do
    out[k] = v
    if var.timer == 1 then
        out[k] = var.id * 1000 + v
    end
end

-- 每次运行计时器加1，超过一个随机数后，重置计时器
-- 获取一个随机数 范围是251 - 501
var.random = math.random(251, 501)
var.timer = var.timer + 1
if var.timer > var.random then
    var.timer = 0
end
-- 每五个游戏tick执行一次，降低内存消耗
delay = 1